home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ETO Development Tools 4
/
ETO Development Tools 4.iso
/
Tools - Objects
/
Macintosh Programmer’s Workshop
/
MPW 3.1
/
MPW
/
Interfaces
/
CIncludes
/
SCSI.h
< prev
next >
Wrap
Text File
|
1990-12-13
|
4KB
|
107 lines
/************************************************************
Created: Thursday, September 7, 1989 at 7:18 PM
SCSI.h
C Interface to the Macintosh Libraries
Copyright Apple Computer, Inc. 1986-1989
All rights reserved
************************************************************/
#ifndef __SCSI__
#define __SCSI__
#ifndef __TYPES__
#include <Types.h>
#endif
#define scInc 1
#define scNoInc 2
#define scAdd 3
#define scMove 4
#define scLoop 5
#define scNop 6
#define scStop 7
#define scComp 8
#define scCommErr 2 /*communications error, operation timeout*/
#define scArbNBErr 3 /*arbitration timeout waiting for not BSY*/
#define scBadParmsErr 4 /*bad parameter or TIB opcode*/
#define scPhaseErr 5 /*SCSI bus not in correct phase for attempted operation*/
#define scCompareErr 6 /*data compare error*/
#define scMgrBusyErr 7 /*SCSI Manager busy */
#define scSequenceErr 8 /*attempted operation is out of sequence*/
#define scBusTOErr 9 /*CPU bus timeout*/
#define scComplPhaseErr 10 /*SCSI bus wasn't in Status phase*/
#define sbSIGWord 0x4552
#define pMapSIG 0x504D
struct Block0 {
unsigned short sbSig; /*unique value for SCSI block 0*/
unsigned short sbBlkSize; /*block size of device*/
unsigned long sbBlkCount; /*number of blocks on device*/
unsigned short sbDevType; /*device type*/
unsigned short sbDevId; /*device id*/
unsigned long sbData; /*not used*/
unsigned short sbDrvrCount; /*driver descriptor count*/
unsigned long ddBlock; /*1st driver's starting block*/
unsigned short ddSize; /*size of 1st driver (512-byte blks)*/
unsigned short ddType; /*system type (1 for Mac+)*/
unsigned short ddPad[243]; /*ARRAY[0..242] OF INTEGER; not used*/
};
typedef struct Block0 Block0;
struct Partition {
unsigned short pmSig; /*unique value for map entry blk*/
unsigned short pmSigPad; /*currently unused*/
unsigned long pmMapBlkCnt; /*# of blks in partition map*/
unsigned long pmPyPartStart; /*physical start blk of partition*/
unsigned long pmPartBlkCnt; /*# of blks in this partition*/
unsigned char pmPartName[32]; /*ASCII partition name*/
unsigned char pmParType[32]; /*ASCII partition type*/
unsigned long pmLgDataStart; /*log. # of partition's 1st data blk*/
unsigned long pmDataCnt; /*# of blks in partition's data area*/
unsigned long pmPartStatus; /*bit field for partition status*/
unsigned long pmLgBootStart; /*log. blk of partition's boot code*/
unsigned long pmBootSize; /*number of bytes in boot code*/
unsigned long pmBootAddr; /*memory load address of boot code*/
unsigned long pmBootAddr2; /*currently unused*/
unsigned long pmBootEntry; /*entry point of boot code*/
unsigned long pmBootEntry2; /*currently unused*/
unsigned long pmBootCksum; /*checksum of boot code*/
unsigned char pmProcessor[16]; /*ASCII for the processor type*/
unsigned short pmPad[188]; /*512 bytes long currently unused*/
};
typedef struct Partition Partition;
struct SCSIInstr {
unsigned short scOpcode;
unsigned long scParam1;
unsigned long scParam2;
};
typedef struct SCSIInstr SCSIInstr;
#ifdef __cplusplus
extern "C" {
#endif
pascal OSErr SCSIReset(void);
pascal OSErr SCSIGet(void);
pascal OSErr SCSISelect(short targetID);
pascal OSErr SCSICmd(Ptr buffer,short count);
pascal OSErr SCSIRead(Ptr tibPtr);
pascal OSErr SCSIRBlind(Ptr tibPtr);
pascal OSErr SCSIWrite(Ptr tibPtr);
pascal OSErr SCSIWBlind(Ptr tibPtr);
pascal OSErr SCSIComplete(short *stat,short *message,unsigned long wait);
pascal short SCSIStat(void);
pascal OSErr SCSISelAtn(short targetID);
pascal OSErr SCSIMsgIn(short *message);
pascal OSErr SCSIMsgOut(short message);
#ifdef __cplusplus
}
#endif
#endif